#ifndef HTTP_RESPONSE
#define HTTP_RESPONSE
#include <string>

class CResponse
{
public:
	enum eStatusCode
	{
		C100,
		C101,
		C200,
		C201,
		C202,
		C203,
		C204,
		C205,
		C206,
		C300,
		C301,
		C302,
		C303,
		C304, 
		C305,
		C307,
		C400,
		C401,
		C402,
		C403,
		C404,
		C405,
		C406,
		C407,
		C408,
		C409,
		C410,
		C411,
		C412,
		C413,
		C414,
		C415,
		C416,
		C417,
		C500,
		C501,
		C502,
		C503,
		C504,
		C505
	};

	enum eContentType
	{
		contenttype_PlainText,
		ContentType_HTML,
		ContentType_XML,
	};

public:
	eStatusCode		StatusCode;
	std::string		ReasonPhrase;
	std::string		ContentType;
	unsigned int	ContentLength;
	const char *	ResponseContent;

	CResponse();
	~CResponse();
	void SetStatusCode(eStatusCode code);
	void SetContentType(std::string & ContentType);
	void SetContentType(eContentType ContentType);
	void SetResponseContent(const char * pData, unsigned int length);

	const char * GetStatusPhrase();
	int GetStatusNumber();
	unsigned int GetContentLength();
	const char * GetContentType();
	const char * GetContentData();
};

#endif
